package com.peakmain.baselibrary.utils;

import android.graphics.Paint;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * author ：Peakmain
 * version : 1.0
 * createTime：2019/4/9
 * mail:2726449200@qq.com
 * describe：
 */
public class TextUtil {

    static DecimalFormat fnum = new DecimalFormat("##0.00");

    public static boolean isValidate(String content) {
        if (content != null && !"".equals(content.trim())) {
            return true;
        }
        return false;
    }

    public static boolean isValidate(String... contents) {
        for (int i = 0; i < contents.length; i++) {
            if (contents[i] == null || "".equals(contents[i].trim())) {
                return false;
            }
        }
        return true;
    }

    public static String format(float data) {
        return fnum.format(data);
    }


    public static boolean isValidate(ArrayList<?> list) {
        if (list != null && list.size() > 0) {
            return true;
        }
        return false;
    }

    public static boolean isValidPassword(String content) {
        if (content != null && content.length() >= 6 && content.length() <= 20) {
            return true;
        }
        return false;
    }

    public static boolean isMobileNum(String mobiles) {
        Pattern p = Pattern
                .compile("^((13[0-9])|(14[0-9])|(15[0-9])|(16[0-9])|(18[0-9])|(17[0-9])|(191)|(198)|(199))\\d{8}$");
        Matcher m = p.matcher(mobiles);
        return m.matches();

    }

    public static boolean isChinese(String password) {
        Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
        Matcher m = p.matcher(password);
        while (m.find()) {
            return true;
        }
        return false;

    }

    /**
     * 自动分割文本
     *
     * @param content 需要分割的文本
     * @param p       画笔，用来根据字体测量文本的宽度
     * @param width   最大的可显示像素（一般为控件的宽度）
     * @return 一个字符串数组，保存每行的文本
     */
    public static String[] autoSplit(String content, Paint p, float width) {
        int length = content.length();
        float textWidth = p.measureText(content);
        if (textWidth <= width) {
            return new String[]{content};
        }

        int start = 0, end = 1, i = 0;
        int lines = (int) Math.ceil(textWidth / width); // 计算行数
        String[] lineTexts = new String[lines];
        while (start < length) {
            if (p.measureText(content, start, end) > width) { // 文本宽度超出控件宽度时
                lineTexts[i++] = (String) content.subSequence(start, end);
                start = end;
            }
            if (end == length) { // 不足一行的文本
                lineTexts[i] = (String) content.subSequence(start, end);
                break;
            }
            end += 1;
        }
        return lineTexts;
    }

    /**
     * 半角转换为全角
     *
     * @param input
     * @return
     */
    public static String toDbc(String input) {
        char[] c = input.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if (c[i] == 12288) {
                c[i] = (char) 32;
                continue;
            }
            if (c[i] > 65280 && c[i] < 65375)
                c[i] = (char) (c[i] - 65248);
        }
        return new String(c);
    }


}
